package src.main.java.action;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;

import src.main.java.Constantes;
import src.main.java.dao.PedidoDAO;
import src.main.java.entity.ClienteTO;
import src.main.java.entity.PedidoDB;
import src.main.java.entity.PedidoTO;
import src.main.java.modules.container.LogisticaCaller;
import src.main.java.utils.ConvertPedidoTO;

import com.opensymphony.xwork2.ActionSupport;


public class PedidosViewAction extends ActionSupport implements ServletRequestAware, ServletResponseAware, SessionAware {
	
	private HttpServletRequest request;
	private HttpServletResponse response;
	private Map<String, Object> session;
	
	private List<PedidoDB> listPedidos;
	private PedidoDAO pedidoDAO;
	private PedidoTO pedido;
	private String id;
	private String statusEntrega;
	
	private String feedback;
	private String action;
	
	@Action(value = "/meus-pedidos", results = {
			@Result(location = "pedidos.jsp", name = "sucess"),
			@Result(location = "actionRedirect.jsp", name = "sessionExpired")}
	)
	public String telaPedidos(){
		ClienteTO cliente = (ClienteTO)session.get("cliente");
		if (cliente == null){
			setAction("");
			return "sessionExpired";
		}
		if (pedidoDAO == null)
			pedidoDAO = new PedidoDAO();
		if (Constantes.MODO_CONECTADO_DO_IC)
			listPedidos = pedidoDAO.listPedidoByCpf(cliente.getCpf());
		else
			listPedidos = pedidoDAO.listPedidoByCpf(21980281319L);
		return "sucess";
	}
	
	@Action(value = "/pedidoView", results = {
			@Result(location = "pedidoView.jsp", name = "sucess"),
			@Result(location = "actionRedirect.jsp", name = "sessionExpired")}
	)
	public String pedidoView(){
		ClienteTO cliente = (ClienteTO)session.get("cliente");
		if (cliente == null || id == null){
			setAction("");
			return "sessionExpired";
		}
		if (pedidoDAO == null)
			pedidoDAO = new PedidoDAO();
		PedidoDB pedidoDB = pedidoDAO.getPedidoById(Integer.valueOf(id));
		pedido = ConvertPedidoTO.fromPedidoDB(pedidoDB);
		
		statusEntrega = LogisticaCaller.statusEntrega(pedido.getEntrega().getNumeroEntrega());
		
		return "sucess";
	}
	
	@Override
	public void setServletResponse(HttpServletResponse arg0) {
		this.response = arg0;
	}

	@Override
	public void setServletRequest(HttpServletRequest arg0) {
		this.request = arg0;
	}

	@Override
	public void setSession(Map<String, Object> arg0) {
		this.session = arg0;		
	}

	public String getFeedback() {
		return feedback;
	}

	public void setFeedback(String feedback) {
		this.feedback = feedback;
	}

	public List<PedidoDB> getListPedidos() {
		return listPedidos;
	}

	public void setListPedidos(List<PedidoDB> listPedidos) {
		this.listPedidos = listPedidos;
	}

	public String getAction() {
		return action;
	}

	public void setAction(String action) {
		this.action = action;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getStatusEntrega() {
		return statusEntrega;
	}

	public void setStatusEntrega(String statusEntrega) {
		this.statusEntrega = statusEntrega;
	}

	public PedidoTO getPedido() {
		return pedido;
	}

	public void setPedido(PedidoTO pedido) {
		this.pedido = pedido;
	}

}
